package cn.zjnu.dao;

import cn.zjnu.domain.Cart;
import cn.zjnu.domain.Goods;
import cn.zjnu.domain.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface ShoppingDao {
    /*
        获取商品信息：
        1. getAll(): 获取所有商品信息
        2. getCartById(): 获取对应用户购物车中的商品信息
        3. getAllById(): 获取指定id的商品信息
        4. getCartByUser(): 获取用户的购物车信息
        5. getGoodsById(): 获取指定商品的信息
        6. getUserById(): 获取指定用户的信息
     */
    @Select("SELECT * FROM goods_msg")
    public List<Goods> getAll();
    @Select("SELECT * FROM shopping_cart WHERE user_id = #{user_id} AND goods_id = #{goods_id}")
    public Cart getCartById(Cart cart);
    @Select("SELECT * FROM goods_msg WHERE id = #{id}")
    public List<Goods> getAllById(Integer id);

    @Select("SELECT * FROM shopping_cart WHERE user_id = #{id}")
    public List<Cart> getCartByUser(Integer id);
    @Select("SELECT * FROM goods_msg WHERE id = #{id}")
    public Goods getGoodsById(Integer id);
    @Select("SELECT * FROM user_message WHERE id = #{id}")
    public User getUserById(Integer id);
    /*
        添加到购物车
        1. 该用户的购物车中不存在该商品，则采用insert
        2. 该用户的购物车中存在该商品，则采用update
    */
    @Insert("INSERT INTO shopping_cart VALUES(#{goods_id},#{user_id},#{sp_name}," +
            "#{sp_price},#{sp_amount},#{sp_msg},#{sp_price})")
    public int add(Cart cart);
    /*
        修改信息
            1.update(): 修改购物车中指定用户的指定商品的信息
            2.updateUser(): 修改用户的信息
     */
    @Update("UPDATE shopping_cart SET sp_amount=#{sp_amount},total_price=#{total_price} WHERE goods_id=#{goods_id} AND user_id=#{user_id}")
    public int update(Cart cart);
    @Update("UPDATE user_message SET money = #{money} WHERE id = #{id}")
    public int updateUser(User user);

    /*
        删除购物车数据
     */
    @Delete("DELETE FROM shopping_cart WHERE user_id = #{user_id} AND goods_id = #{goods_id}")
    public int delete(Cart cart);
    @Delete("DELETE FROM shopping_cart WHERE user_id = #{user_id}")
    public int deleteAllById(Integer user_id);

}
